#include <iostream>
#include <cstring>
#include <chrono>

using namespace std;

void rrand(int arr[], const size_t len, const int minvalue = 0)
{
    srand(time(0));

    for(int i=0; i<len; i++)
    {
        while(true)
        {
            int tmp = rand() % len + minvalue;

            int j;
            for(j = 0; j < i; j++)
            {
                if(tmp == arr[j])
                    break;
            }
            
            if(j == i)
            {
                arr[i] = tmp;
                break;
            }

        }
    }
}

void dealcards(int arr[][13])
{
    int arr1[52];               // 洗牌数组
    rrand(arr1, 52, 1);         // 得到洗牌数组
    for(int i = 0; i < 52; i++)
    {
        cout << arr1[i] << " ";
    }
    cout << endl;

    int arr2[52];               // 发牌数组
    rrand(arr2, 52);            // 得到发牌数组
    for(int i = 0; i < 52; i++)
    {
        cout << arr2[i] << " ";
    }
    cout << endl;

    int j = 0;                  // 已发牌的数组下标
    for(int i = 0; i < 13; i++) // 一共发13轮
    {
        arr[0][i] = arr1[arr2[j++]];
        arr[1][i] = arr1[arr2[j++]];
        arr[2][i] = arr1[arr2[j++]];
        arr[3][i] = arr1[arr2[j++]];
    }
}

int main(void)
{
    // int arr[10];
    // rrand(arr, 10, 20);
    // for(int i=0; i<10; i++)
    //     cout << arr[i] << " ";
    // cout << endl;

    int array[4][13];
    dealcards(array);

    for(int i = 0; i < 13; i++)
    {
        cout << array[0][i] << " ";
    }
    cout << endl;

    for(int i = 0; i < 13; i++)
    {
        cout << array[1][i] << " ";
    }
    cout << endl;

    for(int i = 0; i < 13; i++)
    {
        cout << array[2][i] << " ";
    }
    cout << endl;

    for(int i = 0; i < 13; i++)
    {
        cout << array[3][i] << " ";
    }
    cout << endl;
    
    return 0;
}
